package com.efast.dmom.mgmt.service.mes.impl;
import java.util.ArrayList;
import java.util.List;

import com.efast.dmom.mgmt.dao.mes.TrBasProductCfgTestitemDao;
import com.efast.dmom.mgmt.dao.mes.TwBasLotTestingDao;
import com.efast.dmom.mgmt.entity.mes.TrBasProductCfgTestitem;
import com.efast.dmom.mgmt.entity.mes.TwBasLotTesting;
import com.efast.dmom.mgmt.service.mes.TrBasProductCfgTestitemService;
import com.efast.dmom.mgmt.utils.Assist;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class TrBasProductCfgTestitemServiceImpl implements TrBasProductCfgTestitemService{
    @Autowired
    private TrBasProductCfgTestitemDao trBasProductCfgTestitemDao;
    @Autowired
    private TwBasLotTestingDao twBasLotTestingDao;
    
    @Override
    public long getTrBasProductCfgTestitemRowCount(Assist assist){
        return trBasProductCfgTestitemDao.getTrBasProductCfgTestitemRowCount(assist);
    }
    @Override
    public List<TrBasProductCfgTestitem> selectTrBasProductCfgTestitem(Assist assist){
        return trBasProductCfgTestitemDao.selectTrBasProductCfgTestitem(assist);
    }
    @Override
    public TrBasProductCfgTestitem selectTrBasProductCfgTestitemByObj(TrBasProductCfgTestitem obj){
        return trBasProductCfgTestitemDao.selectTrBasProductCfgTestitemByObj(obj);
    }
    @Override
    public TrBasProductCfgTestitem selectTrBasProductCfgTestitemById(Integer id){
        return trBasProductCfgTestitemDao.selectTrBasProductCfgTestitemById(id);
    }
    @Override
    public int insertTrBasProductCfgTestitem(TrBasProductCfgTestitem value){
        return trBasProductCfgTestitemDao.insertTrBasProductCfgTestitem(value);
    }
    @Override
    public int insertNonEmptyTrBasProductCfgTestitem(TrBasProductCfgTestitem value){
        return trBasProductCfgTestitemDao.insertNonEmptyTrBasProductCfgTestitem(value);
    }
    @Override
    public int insertTrBasProductCfgTestitemByBatch(List<TrBasProductCfgTestitem> value){
        return trBasProductCfgTestitemDao.insertTrBasProductCfgTestitemByBatch(value);
    }
    @Override
    public int deleteTrBasProductCfgTestitemById(Integer id){
        return trBasProductCfgTestitemDao.deleteTrBasProductCfgTestitemById(id);
    }
    @Override
    public int deleteTrBasProductCfgTestitem(Assist assist){
        return trBasProductCfgTestitemDao.deleteTrBasProductCfgTestitem(assist);
    }
    @Override
    public int updateTrBasProductCfgTestitemById(TrBasProductCfgTestitem enti){
        return trBasProductCfgTestitemDao.updateTrBasProductCfgTestitemById(enti);
    }
    @Override
    public int updateTrBasProductCfgTestitem(TrBasProductCfgTestitem value, Assist assist){
        return trBasProductCfgTestitemDao.updateTrBasProductCfgTestitem(value,assist);
    }
    @Override
    public int updateNonEmptyTrBasProductCfgTestitemById(TrBasProductCfgTestitem enti){
        return trBasProductCfgTestitemDao.updateNonEmptyTrBasProductCfgTestitemById(enti);
    }
    @Override
    public int updateNonEmptyTrBasProductCfgTestitem(TrBasProductCfgTestitem value, Assist assist){
        return trBasProductCfgTestitemDao.updateNonEmptyTrBasProductCfgTestitem(value,assist);
    }

    public TrBasProductCfgTestitemDao getTrBasProductCfgTestitemDao() {
        return this.trBasProductCfgTestitemDao;
    }

    public void setTrBasProductCfgTestitemDao(TrBasProductCfgTestitemDao trBasProductCfgTestitemDao) {
        this.trBasProductCfgTestitemDao = trBasProductCfgTestitemDao;
    }
    
    @Override
	public int updateTrBasProductCfgTestitemByBatch(List<TrBasProductCfgTestitem> value) {
		return trBasProductCfgTestitemDao.updateTrBasProductCfgTestitemByBatch(value);
	}
    
	@Override
	public List<TrBasProductCfgTestitem> selectLotProductCfgTestitem(Integer lotId, Integer productConfigId,Integer operationId) {
		//通过lotId判断产品执行中是否有检测数据记录
		Assist assist = new Assist();
		assist.setRequires(Assist.andEq("lot_id", lotId));
		assist.setRequires(Assist.andEq("operation_id", operationId));
		List<TwBasLotTesting> lotTesting = twBasLotTestingDao.selectTwBasLotTesting(assist);
		List<TrBasProductCfgTestitem> testing = new ArrayList<TrBasProductCfgTestitem>();
		if(lotTesting!=null&&lotTesting.size()>0) {
			testing = trBasProductCfgTestitemDao.selectLotProductCfgTestitem(lotId,operationId);
		}else {
			testing = trBasProductCfgTestitemDao.getCfgTestitem(productConfigId);
		}
		return testing;
	}

}